<?php

class apartamenteComponents extends sfComponents
{

    /**
     * Genereaza tabelul din care se pot selecta blocuri, scari sau apartamente
     * @param sfWebRequest $request
     */
    public function executeWidget(sfWebRequest $request)
    {
        $this->apartamente = ApartamentPeer::getApartamenteForWidget();
    }

    /**
     * Componenta care contine formularul pentru completarea listei cu blocuri si scari
     * @param sfWebRequest $request
     */
    public function executeEmptyBlocuri(sfWebRequest $request)
    {
        $this->max_scara = sfConfig::get('mod_apartamente_max_scara');
        $this->scara_per_bloc = sfConfig::get('mod_apartamente_scara_per_empty_bloc');
        $this->max_blocuri = sfConfig::get('mod_apartamente_max_blocuri');

        if ($this->add)
        {
            $this->max_blocuri -= BlocPeer::getBlocuriCount();
        }

        $this->form = new EmptyBlocListForm(null, array('bloc_rows' => $this->max_blocuri));
        // URL-ul folosit pentru salvarea formularului
        $this->form->request = 'apartamente/xAddBlocuri';
    }

    public function executeBlocuri(sfWebRequest $request)
    {
        if (!isset($this->blocuri))
        {
            $this->blocuri = BlocPeer::getBlocuri();
        }

        $this->lazy_load = count($this->blocuri) > 1;

        $this->show_add_button = BlocPeer::getBlocuriCount() < sfConfig::get('mod_apartamente_max_blocuri');
        $this->show_delete = BlocPeer::getBlocuriCount() > 1;
    }

    public function executeBlocContent(sfWebRequest $request)
    {
        $bloc_id = $this->bloc_id = $this->id;
        $this->scara = BlocPeer::getScara($bloc_id);

        $this->lazy_load = count($this->scara) > 1;
        $this->show_delete = BlocPeer::getBlocuriCount() > 1;
    }

    public function executeScaraContent(sfWebRequest $request)
    {
        $scara_id = $this->scara_id = $this->id;

        $Scara = ScaraPeer::retrieveByPK($scara_id);
        if (!$Scara)
            return sfView::NONE;

        $this->arguments = array('Scara' => $Scara);

        // daca scara nu a fost inca 'definita', se afiseaza formularul pt completarea informatiilor principale
        // daca scara a fost 'definita' se afiseaza lista cu apartamentele existente si eventual formularul pentru completarea apartamentelor ramase
        $this->isEmpty = $Scara->isUndefined();
    }

    public function executeScaraInfo(sfWebRequest $request)
    {
        $this->form = new ScaraInfoForm($this->Scara);
        $this->form->request = 'apartamente/xScaraInfo';
    }

    public function executeScaraApartamente(sfWebRequest $request)
    {

    }

    public function executeScaraViewInfo(sfWebRequest $request)
    {

    }

    public function executeApartamenteFormList(sfWebRequest $request)
    {
        $this->arguments = array('Scara' => $this->Scara);
    }

    /**
     * @param Scara
     * @param sfForm form
     */
    public function executeApartamenteForm(sfWebRequest $request)
    {
        $this->form = new NewApartamentListForm($this->Scara);
        $this->form->request = 'apartamente/xAddNewApartamente';
    }

    /**
     *
     * @param Scara
     */
    public function executeApartamenteTable(sfWebRequest $request)
    {
        $this->apartamente = ApartamentPeer::getTable($this->Scara->getId());
        if (count($this->apartamente) == 0)
        {
            return sfView::NONE;
        }
    }

    public function executeAddApartamente()
    {

    }

}